﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QKeyEvent>
#include <QMouseEvent>
#include <QPainter>
#include <QRect>
#include <QList>

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

protected:
    void keyPressEvent(QKeyEvent *event) override;
    void mousePressEvent(QMouseEvent *event) override;
    void paintEvent(QPaintEvent *event) override;
    void resizeEvent(QResizeEvent *event) override; // 新增

private:
    QRect playerRect;           // 玩家角色的位置和大小
    QRect exitRect;             // 出口的位置和大小
    QList<QRect> obstacles;     // 障碍物列表
    QList<QPoint> obstacleDirections; // 障碍物的移动方向
    const int moveStep = 10;    // 玩家每次移动的步长
    const int obstacleSpeed = 5; // 障碍物的速度
    bool gameStarted;           // 游戏开始标志
    bool gameOver;              // 游戏结束标志
    bool gameWon;               // 游戏成功标志
    QTimer *obstacleTimer;      // 定时器，用于移动障碍物

    void checkCollisions();     // 检查角色与障碍物的碰撞
    void checkWinCondition();   // 检查角色是否到达出口
    void resetPlayerPosition(); // 重置角色位置
    void endGame(bool won);     // 游戏结束处理
    void startGame();           // 开始游戏处理
    void moveObstacles();       // 移动障碍物
    void initializeObstacles(); // 初始化障碍物方向
};
#endif // MAINWINDOW_H
